package org.zxl.api.platform.service;

import org.zxl.api.common.dto.CloudRequestEntity;
import org.zxl.api.common.dto.CloudResponseEntity;
import org.zxl.api.common.service.CommonService;
import org.zxl.api.platform.dto.AuthInfo;
import org.zxl.api.platform.dto.LoginReqDTO;
import org.zxl.api.platform.proxy.PlatformServiceLoginProxy;

/**
 * @author zhangxiaolong
 * @date 2025-02-17 16:45
 **/
public interface PlatformService extends CommonService {
    /**
     * 登录
     * 代理增强处理;
     * 无特殊要求，无需重写。
     * @param loginReq
     * @return
     */
    default CloudResponseEntity<AuthInfo> login(CloudRequestEntity<LoginReqDTO> loginReq){
        PlatformServiceLoginProxy.before(loginReq, this);
        CloudResponseEntity<AuthInfo> cloudResponseEntity = loginReal(loginReq);

        PlatformServiceLoginProxy.after(loginReq, cloudResponseEntity);

        return cloudResponseEntity;
    };

    /**
     * 使用方不建议直接调用；建议使用代理增强处理login(CloudRequestEntity<LoginReqDTO> loginReq)方法
     * @author zhangxiaolong
     * @date 2025-02-18 11:18:58
     * @param loginReq
     * @return org.zxl.api.common.dto.CloudResponseEntity<org.zxl.api.platform.dto.AuthInfo>
     */
    CloudResponseEntity<AuthInfo> loginReal(CloudRequestEntity<LoginReqDTO> loginReq);
}
